package com.xiaohong.user.pojo;
import com.baomidou.mybatisplus.annotation.*;
import static io.swagger.v3.oas.annotations.media.Schema.AccessMode.READ_ONLY;
import io.swagger.v3.oas.annotations.media.Schema;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.lang.Long;
import java.util.Date;
import java.lang.String;
import java.lang.Integer;

@Schema(name = "User")
public class User implements Serializable{

	@TableId(value = "id",type = IdType.ASSIGN_ID)
	@Schema(description = "主键ID",accessMode = READ_ONLY,required = true)
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long id;//主键ID

	@Schema(description = "py号")
	@TableField("username")
	private Long username;//py号

	@Schema(description = "用户密码")
	@TableField("password")
	private String password;//用户密码

	@Schema(description = "昵称",required = true)
	@TableField("nickName")
	private String nickName;//昵称

	@Schema(description = "手机号",required = true)
	@TableField("phone")
	private String phone;//手机号

	@Schema(description = "用户头像",required = true)
	@TableField("headPic")
	private String headPic;//用户头像

	@Schema(description = "性别（可选 man woman）",required = true)
	@TableField("sex")
	private String sex;//性别（可选 man woman）

	@Schema(description = "邮箱")
	@TableField("email")
	private String email;//邮箱

	@Schema(description = "星座")
	@TableField("constellation")
	private String constellation;//星座

	@Schema(description = "生日")
	@TableField("birthday")
	private Date birthday;//生日

	@Schema(description = "年龄")
	@TableField("age")
	private Integer age;//年龄

	@Schema(description = "职业")
	@TableField("profession")
	private String profession;//职业

	@Schema(description = "大学")
	@TableField("university")
	private String university;//大学

	@Schema(description = "中学")
	@TableField("middle_school")
	private String middleSchool;//中学

	@Schema(description = "小学")
	@TableField("prime_school")
	private String primeSchool;//小学

	@Schema(description = "公司")
	@TableField("company")
	private String company;//公司

	@Schema(description = "所在地")
	@TableField("address")
	private String address;//所在地

	@Schema(description = "家乡")
	@TableField("hometown")
	private String hometown;//家乡

	@Schema(description = "个人介绍")
	@TableField("introduction")
	private String introduction;//个人介绍

	@Schema(description = "个性签名")
	@TableField("personalSignature")
	private String personalSignature;//个性标签

	@Schema(description = "QQ用户唯一标识")
	@TableField("qq_openId")
	private String qqOpenId;//QQ用户唯一标识

	@Schema(description = "微信用户唯一标识")
	@TableField("wx_openId")
	private String wxOpenId;//微信用户唯一标识

	@Schema(description = "用户权限")
	@TableField("authorities")
	private String authorities;//用户权限

	@Schema(description = "已授权IP")
	@TableField("authenticatedIP")
	private String authenticatedIP;//已授权IP

	@Schema(description = "来源(0 管理员 1 Android 2 iPhone 3 PC)",required = true)
	@TableField("source")
	private Integer source;//来源(0 管理员 1 Android 2 iPhone 3 PC)

	@Schema(description = "用户是否可用(0 可用 1 已失效)",required = true)
	@TableField("enabled")
	private Integer enabled;//用户是否可用(0 可用 1 已失效)

	@Schema(description = "用户账号是否已过期（0 未过期 1 已过期）",required = true)
	@TableField("accountNonExpired")
	private Integer accountNonExpired;//用户账号是否已过期（0 未过期 1 已过期）

	@Schema(description = "用户凭证是否已过期（0 未过期 1 已过期）",required = true)
	@TableField("credentialsNonExpired")
	private Integer credentialsNonExpired;//用户凭证是否已过期（0 未过期 1 已过期）

	@Schema(description = "用户账号是否已被锁定（0 未锁定 1 已锁定）",required = true)
	@TableField("accountNonLocked")
	private Integer accountNonLocked;//用户账号是否已被锁定（0 未锁定 1 已锁定）

	@Schema(description = "创建时间",accessMode = READ_ONLY)
	@TableField(value = "gmt_create",fill = FieldFill.INSERT)
	private Date gmtCreate;//创建时间

	@Schema(description = "更改时间",accessMode = READ_ONLY)
	@TableField(value = "gmt_modified",fill = FieldFill.INSERT_UPDATE)
	private Date gmtModified;//更改时间

	@Schema(description = "乐观锁",accessMode = READ_ONLY)
	@Version
	private Integer version;//乐观锁

	@Schema(description = "逻辑删除标志",accessMode = READ_ONLY)
	@TableLogic
	private Integer deleted;//逻辑删除标志

	@Schema(description = "前端同步下标",accessMode = READ_ONLY)
	@TableField(exist = false)
	private Integer index;//前端同步下标

	@Schema(description = "用户分组英文名",accessMode = READ_ONLY)
	@TableField(exist = false)
	private String groupNameEN;//好友分组英文名

	@Schema(description = "用户分组中文名",accessMode = READ_ONLY)
	@TableField(exist = false)
	private String groupNameCH;//好友分组中文名

	@Schema(description = "用户状态",accessMode = READ_ONLY)
	@TableField(exist = false)
	private Integer status;//用户状态 0 离线 1在线 2 隐身

	@Schema(description = "是否添加标志",accessMode = READ_ONLY)
	@TableField(exist = false)
	private Boolean added;//是否添加标志

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public Boolean getAdded() {
		return added;
	}

	public void setAdded(Boolean added) {
		this.added = added;
	}

	public String getConstellation() {
		return constellation;
	}

	public void setConstellation(String constellation) {
		this.constellation = constellation;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getProfession() {
		return profession;
	}

	public void setProfession(String profession) {
		this.profession = profession;
	}

	public String getUniversity() {
		return university;
	}

	public void setUniversity(String university) {
		this.university = university;
	}

	public String getMiddleSchool() {
		return middleSchool;
	}

	public void setMiddleSchool(String middleSchool) {
		this.middleSchool = middleSchool;
	}

	public String getPrimeSchool() {
		return primeSchool;
	}

	public void setPrimeSchool(String primeSchool) {
		this.primeSchool = primeSchool;
	}

	public String getCompany() {
		return company;
	}

	public void setCompany(String company) {
		this.company = company;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getHometown() {
		return hometown;
	}

	public void setHometown(String hometown) {
		this.hometown = hometown;
	}

	public String getIntroduction() {
		return introduction;
	}

	public void setIntroduction(String introduction) {
		this.introduction = introduction;
	}

	public String getPersonalSignature() {
		return personalSignature;
	}

	public void setPersonalSignature(String personalSignature) {
		this.personalSignature = personalSignature;
	}

	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
	}

	public String getGroupNameEN() {
		return groupNameEN;
	}

	public void setGroupNameEN(String groupNameEN) {
		this.groupNameEN = groupNameEN;
	}

	public String getGroupNameCH() {
		return groupNameCH;
	}

	public void setGroupNameCH(String groupNameCH) {
		this.groupNameCH = groupNameCH;
	}

	public Integer getIndex() {
		return index;
	}

	public void setIndex(Integer index) {
		this.index = index;
	}

	//get方法
	public Long getId() {
		return id;
	}

	//set方法
	public void setId(Long id) {
		this.id = id;
	}
	//get方法
	public Long getUsername() {
		return username;
	}

	//set方法
	public void setUsername(Long username) {
		this.username = username;
	}
	//get方法
	public String getPassword() {
		return password;
	}

	//set方法
	public void setPassword(String password) {
		this.password = password;
	}
	//get方法
	public String getNickName() {
		return nickName;
	}

	//set方法
	public void setNickName(String nickName) {
		this.nickName = nickName;
	}
	//get方法
	public String getHeadPic() {
		return headPic;
	}

	//set方法
	public void setHeadPic(String headPic) {
		this.headPic = headPic;
	}
	//get方法
	public String getSex() {
		return sex;
	}

	//set方法
	public void setSex(String sex) {
		this.sex = sex;
	}
	//get方法
	public String getEmail() {
		return email;
	}

	//set方法
	public void setEmail(String email) {
		this.email = email;
	}
	//get方法
	public String getQqOpenId() {
		return qqOpenId;
	}

	//set方法
	public void setQqOpenId(String qqOpenId) {
		this.qqOpenId = qqOpenId;
	}
	//get方法
	public String getWxOpenId() {
		return wxOpenId;
	}

	//set方法
	public void setWxOpenId(String wxOpenId) {
		this.wxOpenId = wxOpenId;
	}
	//get方法
	public String getAuthorities() {
		return authorities;
	}

	//set方法
	public void setAuthorities(String authorities) {
		this.authorities = authorities;
	}
	//get方法
	public String getAuthenticatedIP() {
		return authenticatedIP;
	}

	//set方法
	public void setAuthenticatedIP(String authenticatedIP) {
		this.authenticatedIP = authenticatedIP;
	}
	//get方法
	public Integer getSource() {
		return source;
	}

	//set方法
	public void setSource(Integer source) {
		this.source = source;
	}
	//get方法
	public Integer getEnabled() {
		return enabled;
	}

	//set方法
	public void setEnabled(Integer enabled) {
		this.enabled = enabled;
	}
	//get方法
	public Integer getAccountNonExpired() {
		return accountNonExpired;
	}

	//set方法
	public void setAccountNonExpired(Integer accountNonExpired) {
		this.accountNonExpired = accountNonExpired;
	}
	//get方法
	public Integer getCredentialsNonExpired() {
		return credentialsNonExpired;
	}

	//set方法
	public void setCredentialsNonExpired(Integer credentialsNonExpired) {
		this.credentialsNonExpired = credentialsNonExpired;
	}
	//get方法
	public Integer getAccountNonLocked() {
		return accountNonLocked;
	}

	//set方法
	public void setAccountNonLocked(Integer accountNonLocked) {
		this.accountNonLocked = accountNonLocked;
	}
	//get方法
	public Date getGmtCreate() {
		return gmtCreate;
	}

	//set方法
	public void setGmtCreate(Date gmtCreate) {
		this.gmtCreate = gmtCreate;
	}
	//get方法
	public Date getGmtModified() {
		return gmtModified;
	}

	//set方法
	public void setGmtModified(Date gmtModified) {
		this.gmtModified = gmtModified;
	}
	//get方法
	public Integer getVersion() {
		return version;
	}

	//set方法
	public void setVersion(Integer version) {
		this.version = version;
	}
	//get方法
	public Integer getDeleted() {
		return deleted;
	}

	//set方法
	public void setDeleted(Integer deleted) {
		this.deleted = deleted;
	}

	@Override
	public String toString() {
		return "User{" +
				"id=" + id +
				", username='" + username + '\'' +
				", password='" + password + '\'' +
				", nickName='" + nickName + '\'' +
				", headPic='" + headPic + '\'' +
				", sex=" + sex +
				", email='" + email + '\'' +
				", qqOpenId='" + qqOpenId + '\'' +
				", wxOpenId='" + wxOpenId + '\'' +
				", authorities='" + authorities + '\'' +
				", authenticatedIP='" + authenticatedIP + '\'' +
				", source=" + source +
				", enabled=" + enabled +
				", accountNonExpired=" + accountNonExpired +
				", credentialsNonExpired=" + credentialsNonExpired +
				", accountNonLocked=" + accountNonLocked +
				", gmtCreate=" + gmtCreate +
				", gmtModified=" + gmtModified +
				", version=" + version +
				", deleted=" + deleted +
				'}';
	}
}
